<?php
namespace App\Services\Wxpay\Models;

/**
 *
 * 订单推送海关附加信息对象
 *
 */
class PushCustoms extends Base
{

	/**
	 * 设置微信分配的公众账号ID
	 * @param string $value
	 **/
	public function setAppid($value)
	{
		$this->values['appid'] = $value;
	}

	/**
	 * 获取微信分配的公众账号ID的值
	 * @return 值
	 **/
	public function getAppid()
	{
		return $this->values['appid'];
	}

	/**
	 * 判断微信分配的公众账号ID是否存在
	 * @return true 或 false
	 **/
	public function isAppidSet()
	{
		return array_key_exists('appid', $this->values);
	}

	/**
	 * 设置微信支付分配的商户号
	 * @param string $value
	 **/
	public function setMchId($value)
	{
		$this->values['mch_id'] = $value;
	}

	/**
	 * 获取微信支付分配的商户号的值
	 * @return 值
	 **/
	public function getMchId()
	{
		return $this->values['mch_id'];
	}

	/**
	 * 判断微信支付分配的商户号是否存在
	 * @return true 或 false
	 **/
	public function isMchIdSet()
	{
		return array_key_exists('mch_id', $this->values);
	}


	/**
	 * 设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
	 * @param string $value
	 **/
	public function setOutTradeNo($value)
	{
		$this->values['out_trade_no'] = $value;
	}

	/**
	 * 获取商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号的值
	 * @return 值
	 **/
	public function getOutTradeNo()
	{
		return $this->values['out_trade_no'];
	}

	/**
	 * 判断商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号是否存在
	 * @return true 或 false
	 **/
	public function isOutTradeNoSet()
	{
		return array_key_exists('out_trade_no', $this->values);
	}


	/**
	 * 设置商户系统内部的微信支付订单号
	 * @param string $value
	 **/
	public function setTransactionId($value)
	{
		$this->values['transaction_id'] = $value;
	}

	/**
	 * 获取商户系统内部的微信支付订单号
	 * @return 值
	 **/
	public function getTransactionId()
	{
		return $this->values['transaction_id'];
	}

	/**
	 * 判断商户系统内部的微信支付订单号
	 * @return true 或 false
	 **/
	public function isTransactionIdSet()
	{
		return array_key_exists('transaction_id', $this->values);
	}


	/**
	 * 设置推送海关的海关代码
	 * @param string $value
	 **/
	public function setCustoms($value)
	{
		$this->values['customs'] = $value;
	}

	/**
	 * 获取推送海关的海关代码的值
	 * @return 值
	 **/
	public function getCustoms()
	{
		return $this->values['customs'];
	}

	/**
	 * 判断推送海关的海关代码是否存在
	 * @return true 或 false
	 **/
	public function isCustomsSet()
	{
		return array_key_exists('customs', $this->values);
	}


	/**
	 * 设置推送海关的商户海关备案号,商户在海关登记的备案号，customs非NO，此参数必填
	 * @param string $value
	 **/
	public function setMchCustomsNo($value)
	{
		$this->values['mch_customs_no'] = $value;
	}

	/**
	 * 获取推送海关的商户海关备案号的值
	 * @return 值
	 **/
	public function getMchCustomsNo()
	{
		return $this->values['mch_customs_no'];
	}

	/**
	 * 判断推送海关的商户海关备案号是否存在
	 * @return true 或 false
	 **/
	public function isMchCustomsNoSet()
	{
		return array_key_exists('mch_customs_no', $this->values);
	}


	//------------------------------- 以下字段在拆单或重新报关时必传 -------------------------------

	/**
	 * 设置推送海关的商户子订单号，商户子订单号，如有拆单则必传
	 * @param string $value
	 **/
	public function setSubOrderNo($value)
	{
		$this->values['sub_order_no'] = $value;
	}

	/**
	 * 获取推送海关的商户子订单号的值
	 * @return 值
	 **/
	public function getSubOrderNo()
	{
		return $this->values['sub_order_no'];
	}

	/**
	 * 判断推送海关的商户子订单号是否存在
	 * @return true 或 false
	 **/
	public function isSubOrderNoSet()
	{
		return array_key_exists('sub_order_no', $this->values);
	}


	/**
	 * 设置符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
	 * @param string $value
	 **/
	public function setFeeType($value)
	{
		$this->values['fee_type'] = $value;
	}

	/**
	 * 获取符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型的值
	 * @return 值
	 **/
	public function getFeeType()
	{
		return $this->values['fee_type'];
	}

	/**
	 * 判断符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型是否存在
	 * @return true 或 false
	 **/
	public function isFeeTypeSet()
	{
		return array_key_exists('fee_type', $this->values);
	}


	/**
	 * 设置推送海关的应付金额
	 * @param string $value
	 **/
	public function setOrderFee($value)
	{
		$this->values['order_fee'] = $value;
	}

	/**
	 * 获取推送海关的应付金额的值
	 * @return 值
	 **/
	public function getOrderFee()
	{
		return $this->values['order_fee'];
	}

	/**
	 * 判断推送海关的应付金额是否存在
	 * @return true 或 false
	 **/
	public function isOrderFeeSet()
	{
		return array_key_exists('order_fee', $this->values);
	}


	/**
	 * 设置推送海关的物流费
	 * @param string $value
	 **/
	public function setTransportFee($value)
	{
		$this->values['transport_fee'] = $value;
	}

	/**
	 * 获取推送海关的物流费的值
	 * @return 值
	 **/
	public function getTransportFee()
	{
		return $this->values['transport_fee'];
	}

	/**
	 * 判断推送海关的物流费是否存在
	 * @return true 或 false
	 **/
	public function istTansportFeeSet()
	{
		return array_key_exists('transport_fee', $this->values);
	}


	/**
	 * 设置推送海关的商品价格
	 * @param string $value
	 **/
	public function setProductFee($value)
	{
		$this->values['product_fee'] = $value;
	}

	/**
	 * 获取推送海关的商品价格的值
	 * @return 值
	 **/
	public function getProductFee()
	{
		return $this->values['product_fee'];
	}

	/**
	 * 判断推送海关的商品价格是否存在
	 * @return true 或 false
	 **/
	public function isProductFeeSet()
	{
		return array_key_exists('product_fee', $this->values);
	}


	/**
	 * 设置推送海关的关税
	 * @param string $value
	 **/
	public function setDuty($value)
	{
		$this->values['duty'] = $value;
	}

	/**
	 * 获取推送海关的关税的值
	 * @return 值
	 **/
	public function getDuty()
	{
		return $this->values['duty'];
	}

	/**
	 * 判断推送海关的关税是否存在
	 * @return true 或 false
	 **/
	public function isDutySet()
	{
		return array_key_exists('duty', $this->values);
	}


	//------------------------------- 以下字段在微信缺少用户信息时必传，如果商户上传了用户信息，则以商户上传的信息为准 -------------------------------

	/**
	 * 设置推送海关的用户证件类型
	 * @param string $value
	 **/
	public function setCertType($value)
	{
		$this->values['cert_type'] = $value;
	}

	/**
	 * 获取推送海关的用户证件类型的值
	 * @return 值
	 **/
	public function getCertType()
	{
		return $this->values['cert_type'];
	}

	/**
	 * 判断推送海关的用户证件类型是否存在
	 * @return true 或 false
	 **/
	public function isCertTypeSet()
	{
		return array_key_exists('cert_type', $this->values);
	}


	/**
	 * 设置推送海关的用户证件号码
	 * @param string $value
	 **/
	public function setCertId($value)
	{
		$this->values['cert_id'] = $value;
	}

	/**
	 * 获取推送海关的用户证件号码的值
	 * @return 值
	 **/
	public function getCertId()
	{
		return $this->values['cert_id'];
	}

	/**
	 * 判断推送海关的用户证件号码是否存在
	 * @return true 或 false
	 **/
	public function isCertIdSet()
	{
		return array_key_exists('cert_id', $this->values);
	}


	/**
	 * 设置推送海关的用户姓名
	 * @param string $value
	 **/
	public function setName($value)
	{
		$this->values['name'] = $value;
	}

	/**
	 * 获取推送海关的用户姓名的值
	 * @return 值
	 **/
	public function getName()
	{
		return $this->values['name'];
	}

	/**
	 * 判断推送海关的用户姓名是否存在
	 * @return true 或 false
	 **/
	public function isNameSet()
	{
		return array_key_exists('name', $this->values);
	}



	//	------------------------------- 以下函数是否保留有待验证 -------------------------------


	/**
	 * 设置子商户的商户号
	 * @param string $value
	 **/
	public function setSubMchId($value)
	{
		$this->values['sub_mch_id'] = $value;
	}

	/**
	 * 获取子商户号的值
	 * @return 值
	 **/
	public function getSubMchId()
	{
		return $this->values['sub_mch_id'];
	}

	/**
	 * 设置微信支付分配的终端设备号，商户自定义
	 * @param string $value
	 **/
	public function setDeviceInfo($value)
	{
		$this->values['device_info'] = $value;
	}

	/**
	 * 获取微信支付分配的终端设备号，商户自定义的值
	 * @return 值
	 **/
	public function getDeviceInfo()
	{
		return $this->values['device_info'];
	}

	/**
	 * 判断微信支付分配的终端设备号，商户自定义是否存在
	 * @return true 或 false
	 **/
	public function isDeviceInfoSet()
	{
		return array_key_exists('device_info', $this->values);
	}

	/**
	 * 设置随机字符串，不长于32位。推荐随机数生成算法
	 * @param string $value
	 **/
	public function setNonceStr($value)
	{
		$this->values['nonce_str'] = $value;
	}

	/**
	 * 获取随机字符串，不长于32位。推荐随机数生成算法的值
	 * @return 值
	 **/
	public function getNonceStr()
	{
		return $this->values['nonce_str'];
	}

	/**
	 * 判断随机字符串，不长于32位。推荐随机数生成算法是否存在
	 * @return true 或 false
	 **/
	public function isNonceStrSet()
	{
		return array_key_exists('nonce_str', $this->values);
	}

	/**
	 * 设置商品或支付单简要描述
	 * @param string $value
	 **/
	public function setBody($value)
	{
		$this->values['body'] = $value;
	}

	/**
	 * 获取商品或支付单简要描述的值
	 * @return 值
	 **/
	public function getBody()
	{
		return $this->values['body'];
	}

	/**
	 * 判断商品或支付单简要描述是否存在
	 * @return true 或 false
	 **/
	public function isBodySet()
	{
		return array_key_exists('body', $this->values);
	}

	/**
	 * 设置商品名称明细列表
	 * @param string $value
	 **/
	public function setDetail($value)
	{
		$this->values['detail'] = $value;
	}

	/**
	 * 获取商品名称明细列表的值
	 * @return 值
	 **/
	public function getDetail()
	{
		return $this->values['detail'];
	}

	/**
	 * 判断商品名称明细列表是否存在
	 * @return true 或 false
	 **/
	public function isDetailSet()
	{
		return array_key_exists('detail', $this->values);
	}

	/**
	 * 设置附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
	 * @param string $value
	 **/
	public function setAttach($value)
	{
		$this->values['attach'] = $value;
	}

	/**
	 * 获取附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据的值
	 * @return 值
	 **/
	public function getAttach()
	{
		return $this->values['attach'];
	}

	/**
	 * 判断附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据是否存在
	 * @return true 或 false
	 **/
	public function isAttachSet()
	{
		return array_key_exists('attach', $this->values);
	}

	/**
	 * 设置订单总金额，只能为整数，详见支付金额
	 * @param string $value
	 **/
	public function setTotalFee($value)
	{
		$this->values['total_fee'] = $value;
	}

	/**
	 * 获取订单总金额，只能为整数，详见支付金额的值
	 * @return 值
	 **/
	public function getTotalFee()
	{
		return $this->values['total_fee'];
	}

	/**
	 * 判断订单总金额，只能为整数，详见支付金额是否存在
	 * @return true 或 false
	 **/
	public function isTotalFeeSet()
	{
		return array_key_exists('total_fee', $this->values);
	}

	/**
	 * 设置APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP。
	 * @param string $value
	 **/
	public function setSpbillCreateIp($value)
	{
		$this->values['spbill_create_ip'] = $value;
	}

	/**
	 * 获取APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP。的值
	 * @return 值
	 **/
	public function getSpbillCreateIp()
	{
		return $this->values['spbill_create_ip'];
	}

	/**
	 * 判断APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP。是否存在
	 * @return true 或 false
	 **/
	public function isSpbillCreateIpSet()
	{
		return array_key_exists('spbill_create_ip', $this->values);
	}

	/**
	 * 设置订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
	 * @param string $value
	 **/
	public function setTimeStart($value)
	{
		$this->values['time_start'] = $value;
	}

	/**
	 * 获取订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则的值
	 * @return 值
	 **/
	public function getTimeStart()
	{
		return $this->values['time_start'];
	}

	/**
	 * 判断订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则是否存在
	 * @return true 或 false
	 **/
	public function isTimeStartSet()
	{
		return array_key_exists('time_start', $this->values);
	}

	/**
	 * 设置订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则
	 * @param string $value
	 **/
	public function setTimeExpire($value)
	{
		$this->values['time_expire'] = $value;
	}

	/**
	 * 获取订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则的值
	 * @return 值
	 **/
	public function getTimeExpire()
	{
		return $this->values['time_expire'];
	}

	/**
	 * 判断订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则是否存在
	 * @return true 或 false
	 **/
	public function isTimeExpireSet()
	{
		return array_key_exists('time_expire', $this->values);
	}

	/**
	 * 设置商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠
	 * @param string $value
	 **/
	public function setGoodsTag($value)
	{
		$this->values['goods_tag'] = $value;
	}

	/**
	 * 获取商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠的值
	 * @return 值
	 **/
	public function getGoodsTag()
	{
		return $this->values['goods_tag'];
	}

	/**
	 * 判断商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠是否存在
	 * @return true 或 false
	 **/
	public function isGoodsTagSet()
	{
		return array_key_exists('goods_tag', $this->values);
	}

	/**
	 * 设置接收微信支付异步通知回调地址
	 * @param string $value
	 **/
	/*public function SetNotify_url($value)
	{
		$this->values['notify_url'] = $value;
	}*/

	/**
	 * 获取接收微信支付异步通知回调地址的值
	 * @return 值
	 **/
	/*public function GetNotify_url()
	{
		return $this->values['notify_url'];
	}*/

	/**
	 * 判断接收微信支付异步通知回调地址是否存在
	 * @return true 或 false
	 **/
	/*public function IsNotify_urlSet()
	{
		return array_key_exists('notify_url', $this->values);
	}*/

	/**
	 * 设置取值如下：JSAPI，NATIVE，APP，详细说明见参数规定
	 * @param string $value
	 **/
	public function SetTrade_type($value)
	{
		$this->values['trade_type'] = $value;
	}

	/**
	 * 获取取值如下：JSAPI，NATIVE，APP，详细说明见参数规定的值
	 * @return 值
	 **/
	public function GetTrade_type()
	{
		return $this->values['trade_type'];
	}

	/**
	 * 判断取值如下：JSAPI，NATIVE，APP，详细说明见参数规定是否存在
	 * @return true 或 false
	 **/
	public function IsTrade_typeSet()
	{
		return array_key_exists('trade_type', $this->values);
	}

	/**
	 * 设置trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。
	 * @param string $value
	 **/
	public function setProductId($value)
	{
		$this->values['product_id'] = $value;
	}

	/**
	 * 获取trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。的值
	 * @return 值
	 **/
	public function getProductId()
	{
		return $this->values['product_id'];
	}

	/**
	 * 判断trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。是否存在
	 * @return true 或 false
	 **/
	public function isProductIdSet()
	{
		return array_key_exists('product_id', $this->values);
	}

	/**
	 * 设置trade_type=JSAPI，此参数必传，用户在商户appid下的唯一标识。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。
	 * @param string $value
	 **/
	public function SetOpenid($value)
	{
		$this->values['openid'] = $value;
	}

	/**
	 * 获取trade_type=JSAPI，此参数必传，用户在商户appid下的唯一标识。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。 的值
	 * @return 值
	 **/
	public function GetOpenid()
	{
		return $this->values['openid'];
	}

	/**
	 * 判断trade_type=JSAPI，此参数必传，用户在商户appid下的唯一标识。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。 是否存在
	 * @return true 或 false
	 **/
	public function IsOpenidSet()
	{
		return array_key_exists('openid', $this->values);
	}
}